package org.example.hospital_frontend.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.example.hospital_frontend.domain.MedicalRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.example.hospital_frontend.domain.MedicalRecordVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

/**
* @author Administrator
* @description 针对表【medical_record(患者病历表)】的数据库操作Mapper
* @createDate 2025-05-23 20:34:53
* @Entity org.example.hospital_frontend.domain.MedicalRecord
*/
@Mapper
public interface MedicalRecordMapper extends BaseMapper<MedicalRecord> {

    /**
     * 分页查询病历列表，支持按诊断结果、患者用户名、医生姓名搜索
     * @param page 分页对象
     * @param keyword 搜索关键字
     * @return 分页结果
     */
    Page<MedicalRecordVO> selectMedicalRecordVOPage(
            Page<MedicalRecordVO> page,
            @Param("keyword") String keyword
    );

    /**
     * 查询所有病历记录
     * @return 病历记录列表
     */
    List<MedicalRecord> selectAllMedicalRecords();

    /**
     * 根据ID查询病历记录
     * @param id 病历ID
     * @return 病历记录
     */
    MedicalRecord selectMedicalRecordById(@Param("id") Long id);

    /**
     * 根据ID删除病历记录
     * @param id 病历ID
     */
    void deleteMedicalRecordById(@Param("id") Long id);

    /**
     * 查询医生接诊统计
     * @return 医生接诊统计数据
     */
    List<Map<String, Object>> selectDoctorStatistics();

    /**
     * 查询诊断分布统计
     * @return 诊断分布统计数据
     */
    List<Map<String, Object>> selectDiagnosisStatistics();

    MedicalRecordVO selectMedicalRecordVOById(Integer id);
}




